#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys

import fitz  # 注意：导入的模块名是fitz，但包名是PyMuPDF
import os


def convert_pdf_to_images(pdf_path, output_dir, zoom_x=2.0, zoom_y=2.0):
    """
    将PDF的每一页转换为图片

    参数:
    pdf_path (str): PDF文件路径
    output_dir (str): 图片输出目录
    zoom_x (float): X轴缩放因子(影响分辨率)
    zoom_y (float): Y轴缩放因子(影响分辨率)
    """
    # 确保输出目录存在
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 打开PDF文件
    pdf_document = fitz.open(pdf_path)

    # 获取PDF文件名（不含扩展名）
    pdf_name = os.path.splitext(os.path.basename(pdf_path))[0]

    # 遍历每一页
    for page_num in range(len(pdf_document)):
        # 获取页面
        page = pdf_document[page_num]

        # 创建缩放矩阵（缩放因子为2.0，意味着分辨率提高4倍）
        mat = fitz.Matrix(zoom_x, zoom_y)

        # 将页面转换为像素图（pixmap）
        pix = page.get_pixmap(matrix=mat)

        # 构建输出图片路径
        image_path = os.path.join(output_dir,
                                  f"{pdf_name}_page_{page_num + 1}.png")

        # 保存图片为PNG格式
        pix.save(image_path)

        print(f"已转换第 {page_num + 1} 页 -> {image_path}")

    # 关闭PDF文档
    pdf_document.close()


# 使用示例
if __name__ == "__main__":
    if len(sys.argv) != 3:
        print(f'Usage: {sys.argv[0]} <input_pdf> <output_dir>')
        sys.exit(1)
    convert_pdf_to_images(sys.argv[1], sys.argv[2])
